/** @jsxImportSource @emotion/react */
import * as React from "react";
import {
    Button, TextArea, Text, useToast, InputLine, SuffixInput,
} from "customize-easy-ui-component";
import {InspectRecordLayout, InternalItemProps, useItemInputControl} from "../../common/base";
import {useMedia} from "use-media";
import {assertNamesUnique} from "../../common/eHelper";
import {EditStorageContext} from "../../StorageContext";
import {input额定是, displayTC额定功率} from "../../boiler/rarelyVary";
import {itemA下结论} from "./ConclusionglRef";
import {itemA检验项} from "./InspectionItem";
import {config证书概况} from "./CertificatePage";

export const input改造定蒸发 = {
    edit:(inp:any,setInp:(a:any)=>void)=>{
        return <div><Text css={{fontSize:'0.7rem'}}>改造后额定蒸发量/功率的就当前录入：</Text>
            <InputLine  label={`改造后额定${inp?.是功率 ? '功率' : '蒸发量'}`}>
                <SuffixInput  value={inp?.额蒸发功 ||''}
                              onChange={e => setInp({...inp, 额蒸发功: e.currentTarget.value || undefined}) }>
                    {inp?.是功率 ? 'MW' : 't/h'}</SuffixInput>
            </InputLine>
        </div>;
    },
    view: (orc: any) => {
        //没法上 const theme= useTheme();        ？区别css={{[theme.mediaQueries.lg + ', print']: {wordBreak: 'keep-all'}}}
        return <div css={{display: 'flex', justifyContent: 'space-around', alignItems: 'center'}}>
            <Text>{orc.额蒸发功 || '／'}</Text>
            <Text css={{wordBreak: 'keep-all'}}>{orc.是功率 ? 'MW' : 't/h'}</Text>
        </div>;
    },
};
const 加热方式=['生物质','燃气','燃油'];
const 燃烧燃料=['天然气','生物质成型燃料','水煤浆'];
export const config设备概况 = [
    //显示场景【需隐藏和转移】；   正式报告没有单独这一行的， 便于拆分；
    [['额定蒸发量/功率?, 是额定功率的吗',{n:'是功率',t:'b'}] ],
    [['使用单位', '_$使用单位'], ],
    [['使用单位地址', '_$使用单位地址'], ['邮政编码', '_$使用单位邮编'] ],
    [['使用单位联系人', '_$单位联系人'],  ['联系人电话', '_$使用单位电话'], ],
    [['制造单位', '_$制造单位'], ],
    [['锅炉型号', '_$型号'], ['制造日期', '_$制造日期']],
    //[改造前]直接 去台账：    【改造后】就走这份报告当前做录入的。

    [['产品编号', '_$出厂编号'], [displayTC额定功率(true), '_$额定蒸发量', input额定是], ],
        //orc.是功率：不能改：改造前后 需不变。
    [['设备代码', '_$设备代码'], [displayTC额定功率(false), '额蒸发功', input改造定蒸发], ],

    //额定出口压力?? 也会变动？台账提前修改： 多次修改技术参数？
    [['原使用证号', '_$使用证号'], ['额定出口压力', '_$设计出口压力','MPa'] ],
    [['工作介质', '_$工作介质', ], ['额定出口温度', '_$出口温度','℃'], ],
    [['设计制造的加热方式', {n:'设加热式',t:'l',l:加热方式}],  ['设计制造的燃料', {n:'设燃料种',t:'l',l:燃烧燃料}], ],
    [['本次改造前加热方式', '_$加热方式',],  ['本次改造前的燃料', '_$燃料种类', ], ],
    [['改造后加热方式', {n:'新加热式',t:'l',l:加热方式},],  ['改造后燃烧燃料', {n:'新燃料种',t:'l',l:燃烧燃料},], ],
    [['修理部件名称及简要情况',{n:'简要情修',t:'m'}] ],
    [['改造部件名称及主要变化情况',{n:'简要情改',t:'m'}] ],
    [['改造后锅炉型号', '改后型号'], ],
    //证书那边也有的： 同一个存储的；
    [['施工单位', '施单位', ],  ['许可证编号', '施许可号' ] ],
    [['许可级别', '施许级',],  ['联系人', '施联系人' ] ],
    [['告知日期', {n:'告知日',t:'d'},],  ['联系电话', '施联系电' ] ],
];

export const EntranceSetup =
    React.forwardRef((
        {children, show, alone = true, repId, verId, rep}: InternalItemProps, ref
    ) => {
        const atPrint = useMedia('print');
        const toast = useToast();
        const doCheckNames = React.useCallback((verId: string) => {
            const result = assertNamesUnique([{value: rep?.tzFields},
                {value: config设备概况, type:'esnt'}, {value: config证书概况, type:'esnt'},
                {value:[...itemA下结论, ...itemA检验项, ]},
                {value:['Projects', '其他表', '联络单' ]}
                ]);
            toast({title: "完成！", subtitle: result ? "没发现冲突" : "测试开关没开", intent: "success"});
        }, [rep,toast]);
        const {storage, setStorage} =React.useContext(EditStorageContext) as any;
        const getInpFilter = React.useCallback((par: any) => {
            const {_tblFixed, } =par||{};
            return {_tblFixed, };
        }, []);
        const {inp, setInp} = useItemInputControl({ref});
        if (atPrint) return null;
        else return (
            <InspectRecordLayout inp={inp} setInp={setInp} getInpFilter={getInpFilter} show={show}
                                 alone={alone} label={'初始化本报告，默认值配置等'}>
                {process.env.REACT_APP_TEST==='true' && <><div>
                    <Text variant="h5">构建开发模板时的工具：校验模板的存储name冲突；</Text>
                    <Button intent='primary' onPress={() => doCheckNames(verId!)}>校验模板name唯一性</Button>
                    <Text variant="h5">设置待测试表格的各列宽度：</Text>
                    <TextArea value={storage?._tblFixed || ''} rows={2} onChange={e =>{
                        JSON.parse(e.currentTarget.value??'[]');
                        setStorage({ ...storage, _tblFixed: e.currentTarget.value || undefined}); }}/>
                </div></>
                }
                <hr/>
            </InspectRecordLayout>
        );
    });
